package universe;

import universe.utils.Vector3D;

/**
 * A natural object which is located outside of Earth's atmosphere, such as the
 * Moon, the Sun, an asteroid, planet, or star.
 */
public interface CelestialBody {

	/* Check this entity for collisions with another movable entity. */
	boolean checkCollision(CelestialBody entity);

	/* Returns this body's mass. */
	public float getMass();

	/* This function is called when the entity collides with something. */
	boolean collide(CelestialBody entity);

	/* Kills this entity. */
	void die();

	/* Gets the radius of this body's bounding sphere. */
	float getBoundingSphere();

	/* Gets the position of this entity. */
	Vector3D getPosition();

	/* Gets the velocity of this entity. */
	Vector3D getVelocity();

	/* Tests if this body is dead. */
	boolean isDead();

	/* Sets whether this entity is dead. */
	void setDead(boolean dead);

	/* Sets the position of this entity. */
	void setPosition(Vector3D pos);

	/* Sets the death timer for this entity. */
	void setTimedDeath(long timeToDeath);

	/* Sets the velocity of this entity. */
	void setVelocity(Vector3D vel);

	/* Updates the entity's statistics based on each time step update. */
	void update(Vector3D fRes, float timeInterval);

	/* Gets this body's information */
	String getInfo();

}
